package nio.c1;


import lombok.extern.slf4j.Slf4j;

import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;

import static com.ymfNetty.nio.c2.ByteBufferUtil.debugAll;

@Slf4j
public class BufferDemo1 {
    public static void main(String[] args) {
        //创建缓冲区
        ByteBuffer buffer = ByteBuffer.allocate(16);
        buffer.put("hello".getBytes());
        log.error("普通get获取，{}",buffer.get(1));
        //读取后postion往后推 从0往后
        buffer.flip();
        buffer.get();
        //get()此时到下标1了，标记1为后面的reset访问的位置
        buffer.mark();
        System.out.println("mark():"+(char) buffer.get() );
        buffer.reset();
        System.out.println("reset():" +"这里拿到标记的数据后就清空标记了");
        //写入字符并且变为了读模式可以直接get方法区
        ByteBuffer buffer2 = StandardCharsets.UTF_8.encode("你好");
        String string = StandardCharsets.UTF_8.decode(buffer2).toString(); //可以读到全部内容
        log.error("StandarCharsets读，{}",string);
        // wrap写入
        ByteBuffer wrap = ByteBuffer.wrap("hello".getBytes());
        //重置读的position位置为0
        debugAll(buffer);
        buffer.rewind();
        //这里的flip 切换到读模式只能一次读一个
//        buffer.flip();
        debugAll(buffer);
        String string2 = StandardCharsets.UTF_8.decode(buffer).toString();
        System.out.println("普通put添加的数据要flip以后才能用StandardCharsets读:" +string2);

    }
}
